import numpy as np
# 模拟高维向量数据
# 假设前3个维度为关键特征，后7个维度为次要或冗余特征
key_features = np.random.normal(5, 1, (10, 3)) # 关键特征，均值为5，方差较大
redundant_features = np.random.normal(0, 0.5, (10, 7)) # 次要特征，均值为0，方差较小

# 合并为10维高维向量
high_dim_vectors = np.hstack([key_features, redundant_features])
# 计算每个维度的方差，作为其对特征表达的贡献度
feature_variance = np.var(high_dim_vectors, axis=0)
# 按贡献度排序
sorted_variance_indices = np.argsort(-feature_variance)
sorted_variance = feature_variance[sorted_variance_indices]

# 输出各维度的贡献度（方差）及其排序结果
print("高维向量各维度的重要性（方差）：")
for i, var in enumerate(feature_variance):
    print(f"维度 {i}: 方差={var:.4f}")
print("\n按重要性排序的维度索引：", sorted_variance_indices)
print("\n排序后的方差值：", sorted_variance)

# 验证特征表达的不均衡性
# PCA用于降维，观察前两个主成分的重要性
from sklearn.decomposition import PCA
pca = PCA(n_components=2) # 降维到2维
low_dim_vectors = pca.fit_transform(high_dim_vectors)

# 输出PCA的主成分重要性
explained_variance_ratio = pca.explained_variance_ratio_
print("\nPCA主成分的重要性（贡献度）：")
print(f"主成分1: {explained_variance_ratio[0]:.4f}")
print(f"主成分2: {explained_variance_ratio[1]:.4f}")